package Object_package;

public class Object_demo2 {
    public static void main(String[] args) {
        /*
        public boolean equals(Object obj)   比较两个对象是否相等
        */

        Student s1 = new Student();
        Student s2 = new Student();

        boolean result1 = s1.equals(s2);
        System.out.println(result1);//true

        //结论：
        //1、如果没有重写equals方法，那么默认使用Object中的方法进行比较，比较的是地址值是否相同
        //2、一般来讲地址值对于我们意义不大，所以我们会重写，重写之后比较的就是对象内部的属性值

        String s="abc";
        StringBuilder sb=new StringBuilder("abc");

        System.out.println(s.equals(sb));//false
        //因为equals方法是被s调用的，而s是字符串
        //所以equals要看String类中的

        //字符串中的equals方法，先判断参数是否为字符串
        //如果是字符串，再比较内部的属性
        //但是如果参数不是字符串，直接返回false

        System.out.println(sb.equals(s));//false
        //因为equals方法是被sb调用的，而sb是StringBuilder
        //所以这里的equals方法要看StringBuilder中的equals方法

        //那么在StringBuilder当中，没有重写equals方法
        //使用的是Object中的
        //在Object当中默认是使用==号比较两个对象的地址值
        //而这里的s和sb记录的地址值是不一样的，所以结果返回false
    }
}
